package com.study.service;

import com.study.dto.*;
import com.study.entity.Comment;
import com.study.result.PageResult;
import com.study.vo.OrderSubmitVO;
import com.study.vo.OrdersDetailVO;
import com.study.vo.UserOrderDataVO;

import java.util.List;

public interface OrderService {
    /**
     * 获取用户订单数据
     * @param userId
     * @return
     */
    UserOrderDataVO getUserOrderData(Long userId);

    /**
     * 下单
     * @param orderSubmitDTO
     * @return
     */
    OrderSubmitVO placeOrder(OrderSubmitDTO orderSubmitDTO);

    /**
     * 根据状态获取用户订单列表
     * @param ordersPageQueryDTO
     * @return
     */
    PageResult getOrderListByStatus(OrdersPageQueryDTO ordersPageQueryDTO);

    /**
     * 评价订单
     * @param commentOrderDTO
     */
    void commentOrder(CommentOrderDTO commentOrderDTO);

    /**
     * 获取订单评价列表
     * @param commentDTO
     * @return
     */
    List<Comment> getCommentList(CommentDTO commentDTO);

    /**
     * 支付订单
     * @param id
     */
    void payment(Long id);

    /**
     * 取消订单
     * @param userCancelOrderDTO
     */
    void cancel(UserCancelOrderDTO userCancelOrderDTO);

    /**
     * 根据id获取订单
     * @param id
     * @return
     */
    OrdersDetailVO getOrderById(Long id);
}
